#pragma unmanaged
#pragma once

#include "Stdafx.h"

namespace O1 {
	namespace Storage {
		namespace Memory {

			using byte = unsigned char;

			class cell
			{
			private:
				
				byte* data;

			public:
				cell(const byte* value, const int size);
				
				cell(cell&& source);
				
				cell& operator= (cell&& source);
				
				~cell();

				cell(const cell& orignal) = delete;
				
				void swap(cell& new_value);

				inline byte * get_value() const noexcept {
					return this->data;
				};

				inline const int get_size() const noexcept {
					return _msize(data);
				};
			};
		}
	}
}
